<!Doctype html>
<html>
<head>
    <meta charset='UTF-8'>
    <title>Document</title>
</head>
<body>

</body>
<script>
// 递归函数：在函数内部调用自己
function fn(a){
    a++
    fn(a)
}

fn(1)

function fn(a){
    a++;
    if(a==10){
        return a;
    }
    return fn(a)
    // /*
    // 10
    //     a=2
    //     return 10
    //         a=3
    //         return 10
    //             a=4
    //             return 10
    //                 a=5
    //                 return 10
    //                     a=6
    //                     return 10
    //                         a=7
    //                         return 10
    //                             a=8
    //                             return 10
    //                                 a=9
    //                                 return 10
    //                                     a=10
    //                                     return 10
    // */
}

var res = fn(1)
console.log(res);


// 利用递归计算5以内和
function fn(a){
    if(a==1){
        return 1
    }
    return a + fn(a-1)
    /*
    fn(5) => 5 + 4 + 3 + 2 + 1
                 4 + 3 + 2 + 1
                     3 + 2 + 1
                         2 + 1
    */
}

var res = fn(5)
console.log(res);


// 斐波那契数列：1 1 2 3 5 8 13 21 34 55 89 ....
// 利用递归求 位置 10  对应的数字
function fn(a){
    if(a==2){
        return 1
    }
    if(a==1){
        return 1
    }
    return fn(a-1) + fn(a-2)
    /*
    return fn(4)        +             fn(3)
           return fn(2) + fn(1) + fn(2)     return fn(2) + fn(1)
    */
}

var res = fn(10)
console.log(res);


// 计算5以内的阶乘： 5*4*3*2*1
function fn(a){
    if(a==1){
        return 1
    }
    return a * fn(a-1)
    /*
    5 * 4 * 3 * 2*1
        4 * 3 * 2*1
            3 * 2*1
                2 * fn(1) =>1
    */
}

var res = fn(5)
console.log(res);


</script>
</html>